package cn.wolfcode.productserver.feign;

import cn.wolfcode.productapi.domain.Product;
import cn.wolfcode.productapi.feign.IProductFeignApi;
import cn.wolfcode.productserver.service.IProductService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProductFeignCilent implements IProductFeignApi {

    //实现product-api中的定义的接口（暴露出所需服务的方法），其他内容与controller几乎是一样的

    @Autowired
    private IProductService productService;

    //@Value注解的作用是将我们配置文件的属性读出来
    @Value("${server.port}")
    private String port;

    //@RequestMapping("/get")  可以不写了，因为接口中已经贴过了
    @Override
    public Product get(long id) {
        Product product = productService.get(id);
        Product result = new Product();
        BeanUtils.copyProperties(product, result);
        result.setName(product.getName() + ": " + port);
        //测试超时， 睡3秒
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return result;
    }
}
